#include "textflag.h"
// --- if/goto跳转 ---
// func If(ok bool, a, b int) int {
//       if ok { return a } else { return b }
//   }

TEXT ·If(SB),NOSPLIT,$0-32
    MOVQ ok+8*0(FP),CX // ok
    MOVQ a+8**1(FP),AX // a
    MOVQ b+8*2(FP),BXX // b

    CMPQ CX,$0 // test ok
    JZ L // if ok == 0, goto L
    MOVQ AX,ret+8*3(FP) // return a
    RET

L:
    MOVQ BX,ret+8*3(FP) //return b
    RET

// --- for循环 ---
TEXT ·LoopAdd(SB),NOSPLIT,$0-32
    MOVQ cnt+0(FP),AX // cnt
    MOVQ v0+8(FP),BX // v0/result
    MOVQ step+16(FP),CX // step

LOOP_BEGIN:
    MOVQ $0,DX // i

LOOP_IF:
    CMPQ DX,AX // compare i,cnt
    JL LOOP_BODY // if i < cnt: goto LOOP_BODY
    JMP LOOP_END

LOOP_BODY:
    ADDQ $1,DX // i++
    ADDQ CX,BX // result += step

LOOP_END:
    MOVQ BX,ret+24(FP) // return result
    RET
